1. Field of the Invention
The present invention relates to computer system and software testing, and, more particularly, to testing information sharing protocol performance and compatibility in a computer system environment.
2. Description of the Related Art
Computer systems are information handling systems which can be designed to give independent computing power to one user or a plurality of users. Computer systems may be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, internet terminals, notebooks and embedded systems. A typical computer system includes a processing unit, associated memory and control logic and a number of peripheral devices that provide input and output for the system. Such peripheral devices often include display monitor(s) or terminal devices, keyboards, mouse-type input devices, floppy and hard disk drives and printers. Computer systems may also include network capability, sound devices, electronic pen devices, voice recognition devices, and tape, CD-ROM (compact disk read only memory), CD-R (CD-recordable), DVD (digital versatile/video disk) or other drives.
Computer systems have attained widespread use in providing computer power to many businesses and institutions. Some important fields in which computer systems have become common include manufacturing monitoring and control; electrical, mechanical, and chemical system design and simulation; and network management and service. Productive processing time is of great importance to the users of computer systems in these and other fields because computer system down time can result in significant costs.
Computer systems are designed to provide a degree of system availability that is necessitated by the applications for which the computer system is intended. High availability (HA) computer systems, as their name implies, are required to be available, or "on," virtually all of the time. Such computer systems (or networks of such computer systems) should be substantially error free or should be capable of recovery from errors. Because computer systems having different hardware and software configurations are often required to interact in various applications, the computer systems should be tested for interactive compatibility prior to their implementation.
Computer systems are often tested using a series of programmable test cases. In one method of testing, the test cases model the input/output (I/O) of the computer system being tested, thereby testing the computer system's functionality and interaction with users and other computer systems. Test cases are often combined into sets of test cases called test suites that are executed by test scripts. Each test suite can exhaustively test an individual facet of a computer system. Multiple test suites can test entire computer systems.
Tools for multi-test execution support are called test harnesses. A test harness directs the execution of test suites and records data from the computer system that is generated as a result of the test cases executed. Test cases are typically run in sequence by the test harness and are easily repeatable when the test harness is used. The test suite may be repeated on a computer system after a specific test case is edited, after the computer system is altered, or after an error occurs with the computer system. Also, the test may be run on separate computer systems, and the results may then be compared to determine system compatibility. Test harnesses such as the International Business Machines (IBM) System Integration Test Bucket (SITB) and the Open Software Foundation (OSF) Test Environment Tool (TET) can perform regression and functional testing on a single system.
A common situation in computer system networks is the sharing of files or information by applications running on different computer systems. A similar situation is the sharing of files or information by multiple applications running on the same computer system. Thus, local and remote file sharing protocols are similar in function and purpose. File sharing protocols are often used to ensure that when one application accesses a storage location that is accessible by other applications, the other applications are prevented from corrupting the accessed information. In one such protocol, an entire file or portions of a file may be locked by a computer system application. Often, a file is locked by way of a locking remote procedure call (RPC) issued from a user application or client computer system to a server computer system which keeps a table of files that are locked by various client or server computer systems. Locking allows a file to be read or written atomically; that is, each read and/or write operation completes before the next begins.
An example of a locking procedure on a UNIX based computer system is the RPC lock daemon or lock manager (rpc.lockd). In a system that includes multiple computer systems capable of sharing files, an rpc.lockd program typically runs on a file server computer system and other rpc.lockd programs run, for example, on application computer systems. The rpc.lockd programs communicate with each other to ensure that reads and/or writes from one application computer system is coordinated with the reads and/or writes of other systems accessing the same data.
When multiple computer systems attempt to lock the same file or portions of the same file, problems can occur. Therefore, the information sharing and locking protocol of every computer system in a network of computer systems must be tested. If one computer system ignores the rules of the relevant information sharing protocol, data could be corrupted and entire networks of computer system can be adversely affected.